1. Technical Field
The present invention relates generally to the field of data processing systems, and more specifically to a closed loop adaptive prestage method, system, and computer program product for prestaging data in a cache in a storage device.
2. Description of Related Art
Disk input/output (I/O) devices typically include a controller which includes a cache. Using the controller cache more effectively can significantly improve the disk's I/O performance. The I/O performance is measured in terms of response time and other values which are the function of the cache hit percentage. The cache hit percentage is the percentage of time I/O requests found their requested data in the cache instead of having to retrieve it from the disk itself.
A sequential I/O request is defined as a request that requests data blocks that are addressed using successive, sequential logical addresses. These addresses appear to a user as being successive and sequential. The data blocks are logically addressed using a start address and then addresses obtained by adding 1 to the last address used.
Existing solutions to increasing the performance of a storage device prestages a set number of units. This number does not change over the course of time as additional I/O requests are received. Some solutions set this number based on instant I/O detection. The sequential detection method assumed that once data is accessed, the data will be accessed again within a short period of time, and the nearby memory locations are likely to be accessed as well.
None of the existing solutions provide a solid understanding of the ongoing I/O access pattern. The I/O access pattern is very unpredictable, particularly for application programs running a multiple thread environment. In such an environment, when every thread goes through several execution phases, the interaction among threads causes the I/O access pattern to change as I/O requests are processed.
Therefore, a need exists for a closed-loop adaptive prestage method, system, and product that can self-monitor the I/O access pattern, statistically characterize I/O references, and configure the system resources to use a proper throttle method and estimation theory.